#ifndef FABRICADECOMPONENTES_H_
#define FABRICADECOMPONENTES_H_

#include <iostream>
#include <gtkmm.h>
#include <vector>
#include <map>
#include "ParserConsultas.h"
#include "FrameConsulta.h"

#include "Portal.h"
#include "Grafico.h"

class Cliente;
class GestorArchivoConfiguracion;

class FabricaDeComponentes {
private:
	ParserConsultas &parserConsultas;
	GestorArchivoConfiguracion &gestorConfig;
	std::vector<std::string> datosDeTablas;
	std::vector<std::string> agregaciones;
	std::map<std::string, std::vector<FrameConsulta*> > framesDeConsulta;// datosTabla + * vectorde FrameCons..
	std::map<std::string, std::string> nombresDeTablas;	// datos tabla , nombretabla

	Portal* crearPortal(std::string &nombreTabla, unsigned int numeroConsulta, Cliente* cliente);
	Grafico* crearGrafico(std::string &nombreTabla, unsigned int numeroConsulta);
	void setAgregaciones();

public:
	FabricaDeComponentes(ParserConsultas &parser, GestorArchivoConfiguracion& gestor);
	FrameConsulta* getFrameConsulta(unsigned int numeroTabla) const;
	void crearComponentes(Cliente* cliente);
	std::vector<std::string>& getDatosDeTablas();
	std::vector<FrameConsulta*>& getFramesDeTabla(std::string &nombreTabla);
	const std::string& getNombreDeTabla(std::string &datosDeTabla);

};



#endif /* FABRICACOMPONENTES_H_ */
